home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-11-15 | 9.7 KB | 281 lines | [TEXT/SPM ] |
- /*
- syslog.c
-
- syslog glue for indirect access to the syslog component.
-
- */
-
-
- #include <stdarg.h>
- #include <string.h>
- #include <stdio.h>
-
- #include <Components.h>
-
- #include "syslog.h"
-
- #include "libsprintf.h"
-
- ComponentInstance _gSyslogComponent=(ComponentInstance)0;
- char* _gSyslogBuf=(char*)0;
- void SyslogInit(void);
-
- void syslog(short priority,const char* format,...){
-
- // try to open if not already done so
- if (_gSyslogComponent==(ComponentInstance)0)
- SyslogInit();
-
- // still couldn't open, return
- if (_gSyslogComponent==(ComponentInstance)0)
- return;
-
- // expand into buf
- libvsprintf(_gSyslogBuf,format,__va(format));
-
- // expanded, now send to syslog
- Comp_syslog(_gSyslogComponent,priority,_gSyslogBuf);
- }
-
- void openlog(const char* ident,short logopts,short facility){
-
- // try to open if not already done so
- if (_gSyslogComponent==(ComponentInstance)0)
- SyslogInit();
-
- // still couldn't open, return
- if (_gSyslogComponent==(ComponentInstance)0)
- return;
-
- Comp_openlog(_gSyslogComponent,ident,logopts,facility);
- }
-
- void closelog(void){
-
- // try to open if not already done so
- if (_gSyslogComponent==(ComponentInstance)0)
- SyslogInit();
-
- // still couldn't open, return
- if (_gSyslogComponent==(ComponentInstance)0)
- return;
-
- Comp_closelog(_gSyslogComponent);
- }
-
- OSErr syslogerr(void){
- OSErr err;
-
- // try to open if not already done so
- if (_gSyslogComponent==(ComponentInstance)0)
- SyslogInit();
-
- // still couldn't open, return
- if (_gSyslogComponent==(ComponentInstance)0)
- return (OSErr)-1;
-
- Comp_geterror(_gSyslogComponent,&err);
-
- return err;
- }
-
- OSErr setsyslogfile(FSSpecPtr spec){
-
- // try to open if not already done so
- if (_gSyslogComponent==(ComponentInstance)0)
- SyslogInit();
-
- // still couldn't open, return
- if (_gSyslogComponent==(ComponentInstance)0)
- return;
-
- return (OSErr)Comp_setfile(_gSyslogComponent,spec);
- }
-
- short setlogmask(short maskpri){
- short oldpri;
-
- // try to open if not already done so
- if (_gSyslogComponent==(ComponentInstance)0)
- SyslogInit();
-
- // still couldn't open, return
- if (_gSyslogComponent==(ComponentInstance)0)
- return 0;
-
- oldpri=Comp_setlogmask(_gSyslogComponent,maskpri);
-
- return oldpri;
- }
-
- /*
- HaveComponentMgr
-
- Uses Gestalt to check for the availability of the Component Manager. We assume that if Gestalt
- does not return an error then the Component Manager exists. If we were concerned with what
- version of the Component Manager that we had we could check the result to see if it is at least
- the version that we need.
- */
- Boolean HaveComponentMgr(void){
- OSErr err;
- long result;
-
- err=Gestalt(gestaltComponentMgr,&result);
-
- if (err!=noErr)
- return false;
- else
- return true;
- }
-
- enum {
- uppExitToShellProcInfo=kPascalStackBased
- };
- #if USESROUTINEDESCRIPTORS
- typedef UniversalProcPtr ExitToShellUPP;
- #define NewExitToShellProc(routine) \
- (ExitToShellUPP) NewRoutineDescriptor((ProcPtr)(routine), \
- uppExitToShellProcInfo, GetCurrentISA())
- #define CallExitToShellProc(routine) \
- CallUniversalProc((UniversalProcPtr)(routine), uppExitToShellProcI align=mac68k
- struct GlueParms {
- OSErr* errp;
- };
- typedef struct GlueParms GlueParms;
- struct ICCallGlue {
- PPC_Glue(GlueParms);
- };
- typedef struct ICCallGlue ICCallGlue;
- #pragma options align=reset
-
- ICCallGlue glue;
-
- if (inst == (ComponentInstance)0) {
- err = badComponentInstance;
- } else {
- SetupGlue(glue,kGetErrorSelector,GlueParms,inst);
-
- SetGlueParm(glue,errp,errp);
-
- err = CallComponentGlue(&glue);
- }
- return err;
- }
-
- pascal ComponentResult Comp_openlog(ComponentInstance inst,const char* ident,
- long logopt,short facility){
- ComponentResult err;
-
- #pragma options align=mac68k
- struct GlueParms {
- short facility;
- long logopt;
- const char* ident;
- };
- typedef struct GlueParms GlueParms;
- struct ICCallGlue {
- PPC_Glue(GlueParms);
- };
- typedef struct ICCallGlue ICCallGlue;
- #pragma options align=reset
-
- ICCallGlue glue;
-
- if (inst == (ComponentInstance)0) {
- err = badComponentInstance;
- } else {
- SetupGlue(glue,kopenlogSelector,GlueParms,inst);
-
- SetGlueParm(glue,ident,ident);
- SetGlueParm(glue,logopt,logopt);
- SetGlueParm(glue,facility,facility);
-
- err = CallComponentGlue(&glue);
- }
- return err;
- }
-
- pascal ComponentResult Comp_syslog(ComponentInstance inst,short priority,
- const char* message){
- ComponentResult err;
-
- #pragma options align=mac68k
- struct GlueParms {
- const char* message;
- short priority;
- };
- typedef struct GlueParms GlueParms;
- struct ICCallGlue {
- PPC_Glue(GlueParms);
- };
- typedef struct ICCallGlue ICCallGlue;
- #pragma options align=reset
-
- ICCallGlue glue;
-
- if (inst == (ComponentInstance)0) {
- err = badComponentInstance;
- } else {
- SetupGlue(glue,ksyslogSelector,GlueParms,inst);
-
- SetGlueParm(glue,message,message);
- SetGlueParm(glue,priority,priority);
-
- err = CallComponentGlue(&glue);
- }
- return err;
- }
-
- pascal ComponentResult Comp_closelog(ComponentInstance inst){
- ComponentResult err;
-
- #pragma options align=mac68k
- struct ICCallGlue {
- PPC_VoidGlue;
- };
- typedef struct ICCallGlue ICCallGlue;
- #pragma options align=reset
-
- ICCallGlue glue;
-
- if (inst == (ComponentInstance)0) {
- err = badComponentInstance;
- } else {
- SetupVoidGlue(glue,kcloselogSelector,inst);
-
- err = CallComponentGlue(&glue);
- }
- return err;
- }
-
- pascal ComponentResult Comp_setfile(ComponentInstance inst,FSSpecPtr spec){
- ComponentResult err;
-
- #pragma options align=mac68k
- struct GlueParms {
- FSSpecPtr spec;
- };
- typedef struct GlueParms GlueParms;
- struct ICCallGlue {
- PPC_Glue(GlueParms);
- };
- typedef struct ICCallGlue ICCallGlue;
- #pragma options align=reset
-
- ICCallGlue glue;
-
- if (inst == (ComponentInstance)0) {
- err = badComponentInstance;
- } else {
- SetupGlue(glue,kSetFileSelector,GlueParms,inst);
-
- SetGlueParm(glue,spec,spec);
-
- err = CallComponentGlue(&glue);
- }
- return err;
- }
-
- #endif
-
-